/**
 * promise封装AJAX  post
 * @param {String} url  请求地址
 * @param {Object} params  请求参数对象{参数名:值...}
 * @param {Object/undefined} headers  请求头
 * @param {String} dataType   数据类型
 * @returns Promise
 */
function post(url,params = {},headers = {},dataType = 'json'){  //直接用promise的静态方法保存数据
    return new Promise((resolve,reject) => {
        const xhr = new XMLHttpRequest
        xhr.onreadystatechange = () => {
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    let res = xhr.responseText
                    switch (dataType) {
                        case 'json':
                            res = JSON.parse(res)
                            break;
                        default:
                            break;
                    }
                    resolve(res)   //用resolve保存数据
                } else{
                    // console.log(xhr.status);
                    reject(xhr.status)
                }
            }
        }
        // 过滤请求参数 {}转为 【键=值&...&键=值】的格式
        let temp = []
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        xhr.open('post',`${url}?`)
        xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
        for(let key in headers){
            xhr.setRequestHeader(key,headers[key])
        }
        xhr.send(temp.join('&'))
    })
}